home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / machines / amigawos / libsrc / AmigaLib / ArgArray.c next >
C/C++ Source or Header  |  1998-08-02  |  2KB  |  108 lines

  1. /*
  2. ** amiga.lib for vbcc-PowerOpen/WarpOS
  3. **
  4. ** ArgArrayInit(), ArgString(), ArgInt(), ArgArrayDone()
  5. **
  6. ** V0.2 19-Apr-98 phx
  7. **      replaced <clib/powerpc/powerpc_protos.h> by <clib/powerpc_protos.h>
  8. ** V0.1 15-Mar-98 phx
  9. **      created
  10. */
  11.  
  12. #include <exec/memory.h>
  13. #include <workbench/startup.h>
  14. #include <workbench/workbench.h>
  15. #include <libraries/commodities.h>
  16. #include <proto/commodities.h>
  17. #include <proto/icon.h>
  18. #include <proto/exec.h>
  19. #include <proto/dos.h>
  20. #include <clib/powerpc_protos.h>
  21.  
  22. /*  Was hat NEW_ARGARRAY zu bedeuten?   */
  23.  
  24. #ifdef NEW_ARGARRAY
  25. static UBYTE **argArray;
  26. #endif
  27. static struct DiskObject *dObj;
  28.  
  29. UBYTE **ArgArrayInit(long argc, UBYTE **argv)
  30. {
  31.   if (argc)
  32.   {
  33.     if (argc>1)
  34. #ifdef NEW_ARGARRAY
  35.       if ((argArray=AllocVecPPC(argc*sizeof(char *),MEMF_ANY,0)))
  36.       {
  37.         UBYTE **p,**p1;
  38.  
  39.         p=p1=argArray;
  40.         argv++;
  41.         do
  42.         {
  43.          *p1++=*argv++;
  44.         }
  45.         while(--argc);
  46.         return p;
  47.       }
  48. #else
  49.     {
  50.       argv++; return argv;
  51.     }
  52. #endif
  53.   }
  54.   else
  55.     if ((dObj=GetDiskObject(((struct WBStartup *)argv)->sm_ArgList->wa_Name)))
  56.       return (UBYTE **)dObj->do_ToolTypes;
  57.   return NULL;
  58.  
  59. }
  60.  
  61. STRPTR ArgString(UBYTE **tt, STRPTR entry, STRPTR defstr)
  62. {
  63.   STRPTR str;
  64.  
  65.   if (!entry || !(str=FindToolType(tt,entry)))
  66.     str=defstr;
  67.   return str;
  68. }
  69.  
  70. LONG ArgInt(UBYTE **tt, STRPTR entry, long defval)
  71. {
  72.   STRPTR str;
  73.  
  74.   if (entry && (str=FindToolType(tt,entry)))
  75.     StrToLong(str,&defval);
  76.   return defval;
  77. }
  78.  
  79. #if 0
  80.  
  81. CxObj *UserFilter(UBYTE **tt, STRPTR entry, STRPTR defstr)
  82. {
  83.   STRPTR str;
  84.  
  85.   if (!entry || !(str=FindToolType(tt,entry)))
  86.     str=defstr;
  87.   return (CreateCxObj(CX_FILTER,(long)str,NULL));
  88. }
  89.  
  90. #endif
  91.  
  92. void ArgArrayDone(void)
  93. {
  94.   struct DiskObject **d;
  95. #ifdef NEW_ARGARRAY
  96.   UBYTE ***a;
  97.  
  98.   if (*(a=&argArray))
  99.   {
  100.     FreeVecPPC((APTR)*a); *a=NULL;
  101.   }
  102. #endif
  103.   if (*(d=&dObj))
  104.   {
  105.     FreeDiskObject(*d); *d=NULL;
  106.   }
  107. }
  108.